package main

import "fmt"

func main() {
	fmt.Println("hello world!")
	var arr1 [2]int // 声明 内部已经分配了内存
	arr1[1] = 23
	fmt.Printf("arr1: %v\n", arr1)

	var slice1 []int // 没有分配内存
	// slice1[1] = 23 error
	// fmt.Printf("slice1 %v\n", slice1)
	slice1 = []int{23, 34} // 字面量 （分配内存）
	ss := &[]int{23, 34}
	fmt.Printf("ss: %v\n", ss)
	fmt.Printf("slice1 %v\n", slice1)

	// 第一种赋值方式 声明+赋值（字面量）
	var map1 map[string]string
	// map1["name"] = "张三" error
	// fmt.Printf("%v\n", map1)
	map1 = map[string]string{"name": "张三"}
	fmt.Printf("%v\n", map1)

	// 第二种赋值方式 声明+赋值（make动态的方式）
	var map2 map[string]int
	map2 = make(map[string]int)
	map2["age"] = 18
	fmt.Printf("map2: %v\n", map2)

	//
	// var map3 = new(map[string]int)
	// map3 = &make(map[string]int)  // 不能使用&取make 可以先定义一个变量再取地址
	// fmt.Printf("map3: %v\n", map3)

	var map4 = map[string]int{}
	map4["name"] = 23
	map5 := map4
	map5["name"] = 99
	fmt.Printf("map4: %v, map5: %v\n", map4, map5)
}
